/*
 * @moduleName: 这个文件是用来配置查询条件的。
 * @Desc: 如果A程序员写个新增页面 就需要一个A配置 B程序员写的话也是同样的原理...新建个[name].formQuerySchema.js文件
 * 这个配置文件也是可以从后台请求来的呦，是不是又强大了很多？也可以是前端人员自己手撸....自行根据项目情况选择...
 * @Author: djkloop
 * @Date: 2017-11-28 15:53:54
 * @Last Modified by: djkloop
 * @Last Modified time: 2017-12-12 18:21:56
 */
import React from 'react';
import {Icon} from 'antd';
module.exports = [
  {
    key: '_id', // 后台需要的值 ---> mongoDB 里面的ObjectID()这里不太适合用？
    title: 'ID', // 前端显示的字段名称
    // 这下面的几个值是用来给后台看的...前台看看就好的嘛...
    showInForm: false,
    dataType: 'primary', // 这个地方我用的是mongod所以用的是MongoDB的类型 mysql -> int
    primary: true, // 主键...但是mongodb好像没有主键这一说??
    showType: 'normal', // 这里是用来显示这个字段是什么类型的...例如<input type="text" /> 默认就是text转化过来就是normal
    disabled: false, // 这个字段是否可以编辑... 默认是false
    render: (text, record) => text  //这个地方是antd提供的接口...
  },
  {
    key: 'name',
    title: '用户名',
    showInForm: false,
    placeholder: '请输入用户名', // 提示用户输入什么
    dataType: 'String', // 如果从传过来的有默认值 那就是String类型
    showType: 'normal', // 目前可用的showType: normal/select/radio/between/checkbox/multiSelect/cascader
    addonBefore: (<Icon type="user"/>), // 对于一些String类型的可以设置一些前置标签或者后置标签
    // defaultValue: 'footerbar', // 有些页面一上来就有默认值
    dateRules:{
      rules: [{type:'string',max:10,required: true, message: '用户名不能为空或请输入正确的位数用户名!' }]
    }
  },
  {
    key: 'blog',
    title: 'BLOG',
    placeholder: '请输入博客网址...',
    dataType: 'String',
    showType: 'normal',
    addonBefore: 'http://',
    addonAfter: 'github.io',
    // defaultValue: 'djkloop',
    dateRules:{
      rules: [{type:'string',required: true, message: '请输入博客网址!' }]
    }
  },
  {
    key: 'age',
    title: '年龄',
    placeholder: '请输入您的年龄...',
    dataType: 'int',
    // defaultValue: 18,
    // 这个数字类型的一般会有最大值最小值
    min: 0,
    max: 30,
    dateRules:{
      rules: [{type:'number',required: true, message: '请输入年龄0~30岁之间!' }]
    }
  },
  {
    key: 'weight',
    title: '体重(kg)',
    dataType: 'float',
    // defaultValue: 50, // 如果默认值是1位 
    step: 0.1, // 步长最少也是1位(如果没有设置步长 默认是0位小数位)
    min:0,
    max: 99.99,
    dateRules:{
      rules: [{type:'number',required: true, message: '请输入体重0~99之间!' }]
    }
  },
  {
    key: 'type',
    title: '类型',
    dataType: 'int',
    showType: 'select',
    options: [
      {
        key: '1',
        value: '类型1'
      },
      {
        key: '2',
        value: '类型2'
      }
    ],
    
    // defaultValue: '1',
    dateRules:{
      rules: [{required: true, message: '请输入类型!' }]
    }
  },
  {
    key: 'userType',
    title: '用户类型',
    dataType: 'String',
    showType: 'radio',
    options: [
      {
        key: 'typeA',
        value: '类型A'
      },
      {
        key: 'typeB',
        value: '类型B'
      }
    ],
    // defaultValue: 'typeA', defaultValue: ['typeA'] -> 这里犯了个错误 不应该是个数组...
    dateRules:{
      rules: [{type:'string',required: true, message: '请选择一个用户类型!' }]
    }
  },
  {
    key: 'score',
    title: '分数',
    dataType: 'int',
    showType: 'between',
    // defaultValueBegin: 9,
    // defaultValueEnd: 99,
    min:0,
    dateRules:{
      rules: [{type:'number',required: true, message: '请输入分数!' }]
    }
  },
  {
    key: 'gpa',
    title: 'GPA',
    dataType: 'float',
    showType: 'between',  // 小数也可以范围查询, 固定两位小数
    placeholderBegin: '哈哈',  // 对于范围查询, 可以定义placeholderBegin和placeholderBegin, 用于两个框的提示语
    placeholderEnd: '切克闹',  // 如果不定义, 对于int/float的范围查询, 提示语是"最小值"/"最大值", 对于日期的范围查询, 提示语是"开始日期"/"结束日期"
    // defaultValueEnd: 99.9,
    // defaultValueBegin: 10.1,
    dateRules:{
      rules: [{type:'number',required: true, message: '请输入gpa!' }]
    }
  },
  {
    key: 'height',
    title: '身高(cm)',
    placeholder: '哈哈哈',
    dataType: 'float',  // 小数等值查询
    // defaultValue: 150,
    dateRules:{
      rules: [{type:'number',required: true, message: '请输身高!' }]
    }
  },
  {
    key: 'duoxuan1',
    title: '多选1',
    dataType: 'int',  // 跟select一样, 这里的值其实也可以是int/float/varchar/datetime
    showType: 'checkbox',  // checkbox
    options: [{key: '1', value: '类型1',disabled:true}, {key: '2', value: '类型2'}],  // 同样注意, option的key必须是字符串
    // defaultValue: ['1', '2'], // 多选的defaultValue是个数组
    dateRules:{
      rules: [{ type: 'array', required: true, message: '请输入多选1!' }]
    }
  },
  {
    key: 'duoxuan2',
    title: '多选2',
    dataType: 'varchar',
    showType: 'multiSelect',  // 另一种多选
    options: [{key: 'type1', value: '类型1'}, {key: 'type2', value: '类型2'}],
    // defaultValue: ['type1'],
    tage: true, // select多选的另外一种情况
    dateRules:{
      rules: [{required: true, message: '请输入多选2!' }]
    }
  },
  {
    key: 'work',
    title: '工作年限',
    dataType: 'int',
    min: 3,
    // defaultValue: 5,
    dateRules:{
      rules: [{required: true, message: '请输入工作年限!' }]
    }
  },
  {
    key: 'duoxuan3',
    title: '多选3',
    dataType: 'varchar',
    showType: 'multiSelect',
    options: [{key: 'K', value: '开'}, {key: 'F', value: '封'}, {key: 'C', value: '菜'}],
    // defaultValue: ['K', 'F', 'C'],
    dateRules:{
      rules: [{required: true, message: '请输入多选3!' }]
    }
  },
  {
    key: 'duoxuan4',
    title: '多选4',
    dataType: 'varchar',
    showType: 'multiSelect',
    options: [{key: 'KK', value: '开',disabled: true}, {key: 'FF', value: '封'}, {key: 'CC', value: '菜'}],
    // defaultValue: ['FF', 'CC'],
    dateRules:{
      rules: [{required: true, message: '请输入多选4!' }]
    }
  },
  {
    key: 'xxbirthday',
    title: 'XX日期',
    dataType: 'datetime',  // 日期等值查询
    // defaultValue: moment('2017-12-01 17:53:53', 'YYYY-MM'),
    dateRules:{
      rules: [{required: true, message: '请输入XX日期' }]
    }
  },
  {
    key: 'city',
    title: '级联选择器',
    showType: 'cascader',
    options: [
    {
      value: 'zhejiang',
      label: 'Zhejiang',
      children: [{
        value: 'hangzhou',
        label: 'Hangzhou',
      }],
    }, 
    {
      value: '河北',
      label: '河北',
      children: [{
        value: '石家庄',
        label: '石家庄',
        children: [{
          value: '正定县',
          label: '正定县',
        }]
      }],
    },
    {
      value: '海南',
      label: '海南',
      children: [{
        value: '三亚',
        label: '三亚',
        children: [{
          value: '吉阳镇',
          label: '吉阳镇',
        }]
      }],
    },
    {
      value: '新疆',
      label: '新疆',
      children: [{
        value: '乌鲁木齐',
        label: '乌鲁木齐',
        children: [{
          value: '天山区',
          label: '天山区',
        }]
      }],
    },
    {
      value: 'jiangsu',
      label: 'Jiangsu',
      children: [{
        value: 'nanjing',
        label: 'Nanjing',
      }],
    }],
    // defaultValue:['zhejiang', 'hangzhou'],
    dateRules:{
      rules: [{required: true, message: '请选择城市!' }]
    }
  },
  {
    key: 'qualityDate',
    title: '保质期',
    dataType: 'datetimeRange',
    showType: 'between',
    placeholderTip: [
      '开始日期有没有',
      '结束日期有没有'
    ],
    // defaultValue: {
    //   defaultValueBegin:'now', // 如果有初始值的话 placeholderTip 首次渲染不显示  现在时间就是now
    //   defaultValueEnd:'2016/01/02'
    // },
    dateFormat: 'YYYY-MM-DD HH:mm:ss',
    dateRules:{
      rules: [{required: true, message: '请输入时间!' }]
    }
  },
  {
    key: 'primarySchool',
    title: '入学日期',
    dataType: 'datetime',  // 日期范围查询, 日期范围查询占用的显示空间会很大, 注意排版
    showType: 'between',
    dateRules:{
      rules: [{ required: true, message: '请输入时间!' }]
    },
    // defaultValueBegin: '2016-01-01 12:34:56',  // 注意日期类型defaultValue的格式
    // defaultValueEnd: '2016-12-01 22:33:44',
  },
  {
    key: 'birthday',
    title: '出生日期',
    dataType: 'datetime',
    showType: 'between',
    // defaultValueBegin: '2016-01-01 12:34:56',
    // defaultValueEnd: '2017-12-01 12:22:22',
    dateRules:{
      rules: [{required: true, message: '请输入时间!' }]
    }
  },
]